From: Marek Marczykowski Date: Mon, 27 Jun 2011 16:27:08 +0000 (+0100) Subject: libxl: Accept disk name in libxl_devid_to_device_disk X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~10125 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=d3bd220d7babf5ee6d71be0d80dd85cab73da862;p=xen.git libxl: Accept disk name in libxl_devid_to_device_disk Accept disk name in xl block-detach. Signed-off-by: Marek Marczykowski Acked-by: Ian Campbell Signed-off-by: Ian Jackson Committed-by: Ian Jackson --- diff --git a/tools/libxl/libxl_device.c b/tools/libxl/libxl_device.c index ba537bfde8..886caa0cde 100644 --- a/tools/libxl/libxl_device.c +++ b/tools/libxl/libxl_device.c @@ -198,7 +198,8 @@ static int device_virtdisk_matches(const char *virtpath, const char *devtype, return 1; } -int libxl__device_disk_dev_number(char *virtpath, int *pdisk, int *ppartition) +int libxl__device_disk_dev_number(const char *virtpath, int *pdisk, + int *ppartition) { int disk, partition; char *ep; diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h index df5a797d9e..76ad1f2aca 100644 --- a/tools/libxl/libxl_internal.h +++ b/tools/libxl/libxl_internal.h @@ -207,7 +207,7 @@ _hidden char *libxl__device_disk_string_of_backend(libxl_disk_backend backend); _hidden char *libxl__device_disk_string_of_format(libxl_disk_format format); _hidden int libxl__device_physdisk_major_minor(const char *physpath, int *major, int *minor); -_hidden int libxl__device_disk_dev_number(char *virtpath, +_hidden int libxl__device_disk_dev_number(const char *virtpath, int *pdisk, int *ppartition); _hidden int libxl__device_console_add(libxl__gc *gc, uint32_t domid, diff --git a/tools/libxl/libxl_utils.c b/tools/libxl/libxl_utils.c index aad8e5a4a8..731b27e51e 100644 --- a/tools/libxl/libxl_utils.c +++ b/tools/libxl/libxl_utils.c @@ -530,18 +530,18 @@ int libxl_devid_to_device_disk(libxl_ctx *ctx, uint32_t domid, const char *devid, libxl_device_disk *disk) { libxl__gc gc = LIBXL_INIT_GC(ctx); - char *endptr, *val; + char *val; char *dompath, *diskpath, *be_path; unsigned int devid_n; int rc = ERROR_INVAL; - devid_n = strtoul(devid, &endptr, 10); - if (devid == endptr) { + devid_n = libxl__device_disk_dev_number(devid, NULL, NULL); + if (devid_n < 0) { goto out; } rc = ERROR_FAIL; dompath = libxl__xs_get_dompath(&gc, domid); - diskpath = libxl__sprintf(&gc, "%s/device/vbd/%s", dompath, devid); + diskpath = libxl__sprintf(&gc, "%s/device/vbd/%d", dompath, devid_n); if (!diskpath) { goto out; }